虚拟化技术简介[转]

看到一篇还不错的介绍虚拟化的文章,所以记下来来源:http://www.cnblogs.com/ventlam/archive/2010/10/09/1846862.html一.虚拟化技术的类型

1.全虚拟化
全虚拟化(Full virtualization),
也称为原始虚拟化技术,全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全
不做任何修改就可以在虚拟机中运行。该技术架构图如图1-1所示:

图1-1. 全虚拟化: 使用Hypervisor分享底层硬件
由于计算机硬件化资源被抽象化,必须需要一个机制来管理抽象化之后的资源。这个机制一般称作Hypervisor或者Virtual
Machine Monitor(VMM)。该模型使用虚拟机协调客户操作系统和原始硬件.因为VMM在客户操作系统和裸硬件之间用于工作协调.
一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理.
因为操作系统是通过Hypervisor来分享底层硬件。全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源.它的唯一限制是操作系统必须能够支持底层硬件(比如, PowerPC) 代表项目;VMWare 闭源/ z/VM(IBM) 闭源
2.半虚拟化
半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术.
它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件。半虚拟化技术使得操作系统知道自身运行在一个Hypervisor,它的客户操作系统
集成了虚拟化方面的代码. 该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作.如图1-2所示:

图1-2半虚拟化: 通过客户操作系统分享进程
上面提到过, 半虚拟化需要客户操作系统做一些修改(配合Hypervisor), 这是一个不足之处. 但是半虚拟化提供了与原始系统相近的性能. 与全虚拟化一样, 半虚拟化可以同时能支持多个不同的操作系统.代表项目: XEN GPL / UML GPL
3.硬件辅助虚拟化
硬件辅助虚拟化(Hardware-assiisted virtualization).或者称作硬件虚拟机(HVM)
主要是指操作系统在其之上运行时,必须靠系统的硬件来完成虚拟化的过程。硬件辅助虚拟技术不但能够提高全虚拟的效率(VM的产品都加入该类功能),而且使
用半虚拟技术的XEN也通过该项技术做到支持Window,Mac之类闭源的操作系统。该技术的架构图如图1-1所示:

图1-3. HVM架构图

X-86平台(包括X-86 64,AMD64)上的硬件辅助虚拟化项目主要是:Intel的VT和AMD的AMD-V

  1. 操作系统级的虚拟化
    最后一个需要了解的虚拟化技术是操作系统级的虚拟化(Operating system-level virtualization),
    它使用不同于上面的虚拟化方法. 该类只能仿真出主机的操作系统,如在Linux上只能运行Linux,Window上只能运行Window

图1-4操作系统级的虚拟化: 隔离单个服务器
二.具体的虚拟化产品
1.XEN
Xen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化的帮助下,现在也支持完全虚拟化MS windows了.XEN架构如图2-1所示:

图2-1 XEN架构

最底层的是计算机硬件,包括CPU,RAM,硬盘接口,网卡,外设数据总线等等。硬件层之上,是Xen hypervisor层,包括总控界面(Xen Control Interface),虚拟CPU,虚拟RAM,虚拟硬盘,虚拟网卡等等。
在Xen层之上,是各个OS实例(OS
instances)。其中最左边的OS实例很特别。在启动Xen的时候,最左边的OS实例,Domain0 on
XenoLinux,自动被启动。Domain0里运行着Xen Control
Software,这个软件控制着各个OS实例的启动,终止,以及监控其运行情况。
Domain0对于其它OS实例的控制,是通过Xen层中Xen Control Interface来实现的。而这个Xen
Control
Interface只对Domain0开放。其它OS实例只有被管理的义务,而没有管理其它实例的权力。DomUs可以运行被修改过或者标准化的操作系
统。被修改的系统运行在paravirtualization(半虚拟化)每个OS实例都被分配一套虚拟的CPU,RAM,硬盘和网卡。每个OS实例使用
这些虚拟的设备,与通常的OS并无不同。在新版的XEN中通过PCI允许客户OS直接读取硬件,以提高整体性能。如图2-2所示,客户OS直接使用硬件

图2-2客户OS通过XEN PCI 直接读取硬件

2.KVM
KVM是在X86平台上的Linux全虚拟化方案。Linux 2.6.20内核增加了KVM虚拟化技术.它的特点是系统内核通过添加KVM的kernel module(kvm.ko),使系统内核自身成为一个Hypervisor(虚拟机管理程序)。
内核中的KVM模块通过/dev/kvm字符串设备显示被虚拟的硬件. KVM使用修改过的QEMU进程做为客户操作系统接口.KVM的虚拟化架构如图2-3所示:

图2-3. KVM的虚拟化

KVM模块向内核增加了一个新的执行模式: 客户模式. 官方原始内核(vanilla kernel)支持内核和用户模式. 客户模式用于执行所有非I/O客户代码, 普通用户模式支持客户I/O.
它是第一个整合到Linux内核的虚拟化技术.

3.VMware
WMware是全球最大的虚拟化厂商,该公司产品线漫长,主要包括桌面版的 Vmware workstation和企业版的VMWare ESX server。它们使用的虚拟化技术主要是全虚拟,在加上硬件辅助虚拟化后,产品性能有所提高。
在云计算中,VM主打产品是vSphere。它是非常完整的虚拟机群集产品,其组件包括:ESX Server 群,vCenter管理中心,数据库,vSphere (VI4)客户端。vSphere组件层如图2-4所示:

图2-4vSphere组件层